Remote direct memory access (RDMA) is a direct memory access from a memory of one computer into a memory of another computer without involving the operating system of either one of the computers (www.wikipedia.org).
There are different RDMA protocols such as but not limited to Infiniband, RoCE (RDMA over converged Ethernet) and iWARP. These protocols differ from each other and are relatively complex.
One solution for facilitating RDMA is purely hardware based and requires the network interface controllers of the different computers to be tailored to the RDMA protocol that is being used for conveying RDMA packets between the different computers. This solution exhibits high throughput, low latency and low central processing unit (CPU) loading but is complex and costly to design and is not flexible.
Another solution for facilitating RDMA is based on an RDMA software module that is hosted by the CPU. This RDMA software module can be adjusted to different RDMA protocols but exhibits a high latency, requires extensive usage of CPU resources and does not allow direct writing (zero copying) of data—as every transaction requires writing data to buffers of the operating system.
There is a growing need to provide a flexible and efficient RDMA solution.